package com.aipartner.service;

import com.aipartner.common.Result;
import com.aipartner.dto.LoginResponse;
import com.aipartner.dto.UserInfoResponse;
import com.aipartner.dto.WechatLoginRequest;
import com.aipartner.entity.User;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

/**
 * 用户服务接口
 * 
 * @author AI伙伴团队
 * @since 2024-01-20
 */
public interface UserService {
    
    /**
     * 微信登录
     */
    Result<LoginResponse> wechatLogin(WechatLoginRequest request);
    
    /**
     * 根据用户ID获取用户信息
     */
    Result<UserInfoResponse> getUserInfo(Long userId);
    
    /**
     * 根据OpenID获取用户
     */
    User getUserByOpenId(String openId);
    
    /**
     * 创建用户
     */
    User createUser(User user);
    
    /**
     * 更新用户信息
     */
    User updateUser(User user);
    
    /**
     * 更新用户信息
     */
    Result<String> updateUserInfo(Long userId, UserInfoResponse request);
    
    /**
     * 增加AI调用次数
     */
    boolean increaseAiCalls(Long userId);
    
    /**
     * 检查用户是否可以调用AI
     */
    boolean canCallAi(Long userId);
    
    /**
     * 更新用户余额
     */
    boolean updateBalance(Long userId, java.math.BigDecimal amount);
    
    /**
     * 更新VIP信息
     */
    boolean updateVipInfo(Long userId, Integer vipLevel, java.time.LocalDateTime expireTime);
    
    /**
     * 重置每日AI调用次数（定时任务）
     */
    void resetDailyAiCalls();
    
    // ==================== 管理端相关方法 ====================
    
    /**
     * 获取管理端用户列表
     */
    Page<User> getAdminUserList(Page<User> page, String userId, String nickname, String vipStatus);
    
    /**
     * 根据ID获取用户信息
     */
    User getById(Long userId);
}
